import request from '@/utils/request'

/**
 * 获取房源列表
 * @param {Object} query 查询参数
 * @returns {Promise}
 */
export function fetchHouseList(query) {
  const params = {
    current: query.pageNum || 1,
    size: query.pageSize || 10
  }
  
  // 只有当值不为空时才添加参数
  if (query.title) params.title = query.title
  if (query.status) params.status = query.status
  
  // 状态值定义:
  // 0 - 待审核
  // 1 - 在售/上架
  // 2 - 已售
  // 3 - 下架
  // 4 - 审核未通过
  
  console.log('最终请求参数:', params)
  
  return request({
    url: '/house/list',
    method: 'get',
    params: params
  })
}

/**
 * 获取房源详情
 * @param {Number} houseId 房源ID
 * @returns {Promise}
 */
export function getHouseDetail(houseId) {
  // 参数验证
  if (!houseId || isNaN(houseId)) {
    console.error('getHouseDetail: 无效的房源ID:', houseId);
    return Promise.reject(new Error('无效的房源ID'));
  }
  
  console.log('开始获取房源详情, ID:', houseId);
  
  return request({
    url: `/house/info/${houseId}`,
    method: 'get'
  }).then(response => {
    console.log(`获取房源(ID:${houseId})详情成功:`, response);
    
    // 检查并处理图片数据
    if (response.data && !response.data.images) {
      // 如果后端没有返回images字段，尝试从其他地方获取图片信息
      console.log('房源详情中没有images字段，尝试查找图片信息');
      
      // 如果有imageList字段，则使用它
      if (response.data.imageList) {
        response.data.images = response.data.imageList;
        console.log('使用imageList作为图片数据:', response.data.images);
      }
    }
    
    return response;
  }).catch(error => {
    console.error(`获取房源(ID:${houseId})详情失败:`, error);
    return Promise.reject(error);
  });
}

/**
 * 审核房源
 * @param {Object} data 审核信息
 * @param {Number} data.houseId 房源ID
 * @param {String} data.status 审核结果状态(前端：1-通过，4-不通过；后端可能预期不同)
 * @param {String} data.remark 审核备注(审核不通过时必填)
 * @returns {Promise}
 */
export function auditHouse(data) {
  console.log('审核房源API调用参数:', data);
  
  // 创建新对象，避免修改原始对象
  const apiParams = {
    houseId: data.houseId,
    // 根据业务逻辑和后端日志，参数名为status，并且:
    // - 前端传入"1"表示审核通过，后端需要的审核后状态为"1"（已上架/在售）
    // - 前端传入"4"表示审核不通过，后端需要的审核后状态为"4"（审核未通过）
    status: data.status, // 直接传递状态值，无需转换
    remark: data.remark || ''
  };
  
  console.log('转换后的审核参数:', apiParams);
  
  return request({
    url: '/house/audit',
    method: 'put',
    data: apiParams
  })
}

/**
 * 修改房源状态（上架、下架、标记为已售）
 * @param {Object} data 状态信息
 * @returns {Promise}
 */
export function changeHouseStatus(data) {
  console.log('修改房源状态API调用参数:', data);
  
  // 创建新对象，避免修改原始对象，确保参数格式正确
  const apiParams = {
    houseId: data.houseId,
    status: data.status
  };
  
  console.log('转换后的状态修改参数:', apiParams);
  
  return request({
    url: '/house/status',
    method: 'put',
    data: apiParams,
    timeout: 30000 // 增加超时时间
  })
}

/**
 * 更新房源信息
 * @param {Object} data 房源信息
 * @returns {Promise}
 */
export function updateHouse(data) {
  // 创建一个新对象，保留原始数据并添加必要字段
  const requestData = {
    ...data,
    // 将当前用户设置为发布者，以通过权限验证
    publisherId: data.publisherId,
    // 添加agentId，确保经纪人权限
    agentId: data.publisherId
  };
  
  console.log('更新房源信息，请求数据:', requestData);
  
  // 使用标准API路径
  return request({
    url: '/house',
    method: 'put',
    data: requestData,
    timeout: 30000 // 增加超时时间
  });
}

/**
 * 添加房源
 * @param {Object} data 房源信息
 * @returns {Promise}
 */
export function addHouse(data) {
  return request({
    url: '/house',
    method: 'post',
    data
  })
}

/**
 * 删除房源
 * @param {Number} houseId 房源ID
 * @returns {Promise}
 */
export function deleteHouse(houseId) {
  return request({
    url: `/house/${houseId}`,
    method: 'delete'
  })
} 